\chapter{Úvod}

Roboti, nebo nějaké jejich obdoby (např. \textit{železní lidé}), se vyskytují v literatuře už mnoho let. Jedním
z prvních byl Talus -- železný člověk, který pomáhal hlavnímu hrdinovi anglického epického díla z konce 16. století. Od
začátku 20. století, díky technickému pokroku, se literatura (a film) se zmiňuje o robotech stále častěji. Dokonce
samotné slovo \textit{robot} bylo převzato z literatury -- poprvé ho použil Karel Čapek kolem roku 1920 v divadelní
hře R. U. R (i když podle některých zdrojů byl vynálezcem slova jeho bratr Josef) a z češtiny se dostalo do mnoha jiných
jazyků.

Skoro ve všech literárních dílech, ve kterých se vyskytují roboti nebo jiné inteligentní stroje, probíhá komunikace mezi
nimi a lidmi (často i mezi roboty samotnými) v přirozeném jazyce. Takto komunikoval např. Arthegall s Talem nebo
titulní hrdina Příběhů pilota Pirxe Stanisława Lema se zařízeními, která ovládala vesmírné lodě. V angličtině
komunikoval taky nadporučík Dat -- android, člen posádky vesmírné lodě USS Enterprise D (problematické byly pro něj
vlastně jen vtipy).

V roce 1950 Alan Turing prezentoval test (dnes je znám jako Turingův test), který podle něj umožňuje prověřit, zda se
počítač (nebo jiný systém) chová \textit{inteligentně}.
%TODO Dopisa� co� jeszcze o te�cie Turinga: �e co� tam przesz�o, a co� nie przesz�o, a og�lnie chodzi o to, �eby... Dwa, mo�e trzy zdania. Je�li chcesz, mog� Ci to pom�c zredagowa�.

Naším cílem bylo vytvořit obecný návrh API pro ovládání robota v při\-ro\-ze\-ném jazyce a ukázkovou implementaci na
robotickém {\wifi} králíkovi \nab.

\section*{Použité konvence}
V této práci jsme použili následující konvence:

\begin{itemize}
  \item Názvy javovských balíků, typů, metod, vlastností a členských proměnných typů jsou vysázeny neproporcionálním
  písmem, např. \lstinline!balik.Typ!.
  \item Víceřádkové ukázky kódu jsou vysázeny neproporcionálním písmem a jsou navíc orámovány, např.:
  \begin{lstlisting}[caption={Ukázka kódu v programovacím jazyce \java.}]
package balik;
/** `Nějaká jednoduchá třída.` */
class Example {
  /** `Metoda, která nedělá vůbec nic.` */
  public void doNothing() {
  }
}
  \end{lstlisting}
  \item Nové pojmy v textu jsou vysázeny kurzívou, např.: ,,tento objekt se bude jmenovat \textit{superobjekt}''.
\end{itemize}

\section*{Struktura práce}

Po tomto úvodu následuje krátký exkurs do problematiky ovládání počítačů a~jiných zařízení hlasem nebo psanými pokyny
(kapitola \ref{chap:research}). Celá kapitola \ref{chap:nabaztag} je věnována robotickému králíkovi \nab{}. Poté
popisujeme obecný návrh (kapitola \ref{chap:plan}) a konkrétní implementaci (kapitola \ref{chap:implementation}).
Kapitoly \ref{chap:plan} a \ref{chap:implementation} obsahují výsledky naší vlastní práce. Použité technologie, software
a komponenty třetích stran jsou popsány v kapitole \ref{chap:technologies}. Na závěr, v kapitole \ref{chap:resume},
naznačujeme další možnosti vývoje programu.

\section*{Obsah práce}

\begin{enumerate}
  \item Definice API mezi agentem (robotickým králíkem \nab) a ovladačem (komunikačním serverem) v následujících
  oblastech:
  \begin{itemize}
    \item komunikace mezi serverem a robotem,
    \item komunikace mezi uživatelem a serverem včetně možnosti zpracování přirozeného jazyka,
    \item komunikace se službami třetích stran,
    \item zpracování získané informace (generování hlasu, analýza vstupu od uživatele).
  \end{itemize}
  \item Implementace serveru pro komunikaci s robotem a zpracování vstupu a výstupu z robota:
  \begin{itemize}
    \item Komunikační protokoly.
    \item Vstup (robot $\rightarrow$ server):
    \begin{itemize}
      \item záznam hlasového vstupu (digitální audio).
    \end{itemize}
    \item Výstup (server $\rightarrow$ robot):
    \begin{itemize}
      \item poslání příkazu pro pohyb,
      \item poslání příkazu pro světelné efekty,
      \item poslání hlasového signálu (digitální audio) -- komunikace s uživatelem,
      \item vstup od uživatele (nastavení, zápis zprávy k poslání a přečtení robotem).
    \end{itemize}
    \item Komunikace se službami třetích stran:
    \begin{itemize}
      \item sběr informací z internetu (RSS).
    \end{itemize}
    \item Zpracování vstupu ze všech zdrojů z hlediska přirozeného jazyka:
    \begin{itemize}
      \item jednoduchý interpret příkazů pro robota v českém jazyce,
      \item roznoznávání jazyka textu,
      \item vytváření zpráv v přirozeném jazyce na základě vzorců,
      \item generování hlasového výstupu z psaného textu,
      \item rozpoznávání hlasu zatím neimplementováno.
    \end{itemize}
  \end{itemize}
  \item Příkladové aplikace:
  \begin{itemize}
    \item rozpoznávání a provádění jednoduchých příkazů v češtině
    \item čtení RSS zpráv
  \end{itemize}
\end{enumerate}